﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Padelcenter.Common
{
    public class Pedido : CommonInterface
    {
        public Pedido() { this.ResetParams(); }

        public void ResetParams()
        {
            this.IdPedido = 0;
            this.FechaAlta = DateTime.Now;
            this.Usuario = new Usuario();
            this.EstadoPedido = new EstadoPedido();
            this.MetodoPago = new MetodoPago();
            this.MetodoEnvio = new MetodoEnvio();
            this.Tarjeta = new Tarjeta();
            this.Direccion = string.Empty;
            this.Ciudad = string.Empty;
            this.CodigoPostal = string.Empty;
            this.Provincia = string.Empty;
            this.Pais = new Pais();
            this.FechaFinalizacion = DateTime.Now;
            this.Moneda = new Moneda();
            this.TotalPedidoSinEnvio = 0;
            this.TotalCostoEnvio = 0;
        }

        private int _idPedido;
        private DateTime _fechaAlta;
        private Usuario _usuario;
        private EstadoPedido _estadoPedido;
        private MetodoPago _metodoPago;
        private MetodoEnvio _metodoEnvio;
        private Tarjeta _tarjeta;
        //private Referido _referido
        private string _direccion;
        private string _ciudad;
        private string _codigoPostal;
        private string _provincia;
        //private Provincia
        private Pais _pais;
        private DateTime _fechaFinalizacion;
        private Moneda _moneda;
        private double _totalPedidoSinEnvio;
        private double _totalCostoEnvio;

        private List<PedidoProducto> _listaPedidoProducto;

        public List<PedidoProducto> ListaPedidoProducto
        {
            get { return _listaPedidoProducto; }
            set { _listaPedidoProducto = value; }
        }

        public Moneda Moneda
        {
            get { return _moneda; }
            set { _moneda = value; }
        }

        public double TotalCostoEnvio
        {
            get { return _totalCostoEnvio; }
            set { _totalCostoEnvio = value; }
        }

        public double TotalPedidoSinEnvio
        {
            get { return _totalPedidoSinEnvio; }
            set { _totalPedidoSinEnvio = value; }
        }

        public DateTime FechaFinalizacion
        {
            get { return _fechaFinalizacion; }
            set { _fechaFinalizacion = value; }
        }

        public Pais Pais
        {
            get { return _pais; }
            set { _pais = value; }
        }

        public string Provincia
        {
            get { return _provincia; }
            set { _provincia = value; }
        }

        public string CodigoPostal
        {
            get { return _codigoPostal; }
            set { _codigoPostal = value; }
        }


        public string Ciudad
        {
            get { return _ciudad; }
            set { _ciudad = value; }
        }

        public string Direccion
        {
            get { return _direccion; }
            set { _direccion = value; }
        }

        public Tarjeta Tarjeta
        {
            get { return _tarjeta; }
            set { _tarjeta = value; }
        }

        public MetodoEnvio MetodoEnvio
        {
            get { return _metodoEnvio; }
            set { _metodoEnvio = value; }
        }

        public MetodoPago MetodoPago
        {
            get { return _metodoPago; }
            set { _metodoPago = value; }
        }

        public EstadoPedido EstadoPedido
        {
            get { return _estadoPedido; }
            set { _estadoPedido = value; }
        }

        public Usuario Usuario
        {
            get { return _usuario; }
            set { _usuario = value; }
        }

        public DateTime FechaAlta
        {
            get { return _fechaAlta; }
            set { _fechaAlta = value; }
        }

        public int IdPedido
        {
            get { return _idPedido; }
            set { _idPedido = value; }
        }
    }

    public class PedidoProducto : CommonInterface
    {
        public PedidoProducto() { this.ResetParams(); }

        public void ResetParams()
        {
            this.Pedido = new Pedido();
            this.Producto = new Producto();
            this.Cantidad = 0;
            this.PrecioUnitario = 0;
            this.Fecha = DateTime.Now;
        }

        private Pedido _pedido;
        private Producto _producto;
        private double _cantidad;
        private double _precioUnitario;
        private DateTime _fecha;

        public DateTime Fecha
        {
            get { return _fecha; }
            set { _fecha = value; }
        }

        public double PrecioUnitario
        {
            get { return _precioUnitario; }
            set { _precioUnitario = value; }
        }

        public double Cantidad
        {
            get { return _cantidad; }
            set { _cantidad = value; }
        }

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }

        public Pedido Pedido
        {
            get { return _pedido; }
            set { _pedido = value; }
        }
    }
}
